class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        # 处理特殊情况：如果其中一个数字是 "0"，乘积直接返回 "0"
        if num1 == "0" or num2 == "0":
            return "0"
        m, n = len(num1), len(num2)
        l = m + n  # 乘积的最大可能长度为 m + n
        ans = [0] * l  # 初始化结果数组，初始值为 0

        # 从 num1 的最低位（即字符串的末尾）开始遍历
        for i in range(m - 1, -1, -1):
            a = int(num1[i])  # 获取 num1 的当前位数字
            # 从 num2 的最低位开始遍历
            for j in range(n - 1, -1, -1):
                b = int(num2[j])  # 获取 num2 的当前位数字
                # 计算当前位的乘积加上之前的进位
                c = a * b + ans[i + j + 1]
                # 当前位的值为 c % 10
                ans[i + j + 1] = c % 10
                # 进位加到更高位
                ans[i + j] += c // 10

        # 去除结果数组的前导零
        if ans[0] == 0:
            ans.remove(0)

        # 将结果数组转换为字符串并返回
        return ''.join(str(i) for i in ans)